var TANGER_OCX_bDocOpen = false;
var TANGER_OCX_filename;
var TANGER_OCX_actionURL; //For auto generate form fiields
var TANGER_OCX_OBJ; //The Control


function openDoc( readOnly) {
	TANGER_OCX_OBJ = document.all.item("TANGER_OCX");
 	var format=document.getElementById("fileFormat");
	if (format!=null) {
		var fileFormat = format.value; 
		if (fileFormat=="WPS.Document") {
			var wps = TANGER_OCX_Check_WPS_installed(); 
			if (wps==false) {
				alert("请安装WPS办公软件，否则无法打开此文件。");
				return false;
			}
		}
	}
   
   var editFileUrl = document.getElementById("editFileUrl").value;
	if(editFileUrl != "" && editFileUrl != null) {	
		try {  
			TANGER_OCX_OBJ.OpenFromURL(editFileUrl); 
		} catch (ex)	{
			alert(ex.description);
		}
	}
	else	{	
		if(null!=format) {	 
			TANGER_OCX_OBJ.CreateNew(format.value); 
		}
	}

	if (readOnly == "true") { 
		TANGER_OCX_OBJ.SetReadOnly(true); 
	}

	return true;
 
}

//套用模板时用，包括加载格式，文件内容 
function openTemplateFromURL(templateId)
{
	if(window.confirm("此操作将去除原有文档中的所有内容，是否继续？")){
		TANGER_OCX_OBJ = document.all.item("TANGER_OCX");
		var downloadPage=document.all.item("defaultDownload").value;
		downloadPage=downloadPage+'&typeFlag=template&templateId='+templateId;
		TANGER_OCX_OBJ.OpenFromURL(downloadPage);
	}
}

//下载模板，文件模板、套红模板等
function addTemplateFormUrl(templateId)
{
	TANGER_OCX_OBJ = document.all.item("TANGER_OCX");
	var downloadPage=document.all.item("defaultDownload").value;
	downloadPage=downloadPage+'&typeFlag=template&templateId='+templateId;
	TANGER_OCX_OBJ.AddTemplateFromURL(downloadPage);
}


//设置用户名
function TANGER_OCX_SetDocUser(cuser)
{
    TANGER_OCX_Username = cuser;
	with(TANGER_OCX_OBJ.ActiveDocument.Application)
	{
		UserName = cuser;		
	}	
}

var Default_Password = "143c8b3M114865e3aa4M309f7eb441fb2b81a93e6fe83dfe3e6c";//文档保护的密码(硬编码)

/**
 * 文档保护
 */
function TANGER_OCX_DocumentProtect() {
	TANGER_OCX_OBJ.ActiveDocument.Protect(2, true, Default_Password, false, true);
	TANGER_OCX_ShowMenuByProtected();
}


/**
 * 判断文档是否保护。true为保护；false为不保护
 */
function TANGER_OCX_IsDocumentProtected() {
	var isProtected = TANGER_OCX_OBJ.ActiveDocument.ProtectionType != -1; 
	return isProtected;
}

/**
 * 根据文档是否保护来显示“安全”的其它菜单
 */
function TANGER_OCX_ShowMenuByProtected() {
	//保护
	if (TANGER_OCX_IsDocumentProtected()) {
		TANGER_OCX_OBJ.EnableCustomMenuItem2(0, 17, -1, true);
		TANGER_OCX_OBJ.EnableCustomMenuItem2(0, 16, -1, false);
	}
	//未保护
	else {
		TANGER_OCX_OBJ.EnableCustomMenuItem2(0, 16, -1, true);
		TANGER_OCX_OBJ.EnableCustomMenuItem2(0, 17, -1, false);
	}
}


function showMenubar(){
	   if(TANGER_OCX_OBJ.Menubar==false){
		   TANGER_OCX_OBJ.Menubar=true;
	   } else {
		   TANGER_OCX_OBJ.Menubar=false;
	   }
   }

  function showToolbar(){
	   if(TANGER_OCX_OBJ.Toolbars==false){
		   TANGER_OCX_OBJ.Toolbars=true;
	   } else {
		   TANGER_OCX_OBJ.Toolbars=false;
	   }
   }

//从本地增加印章文档指定位置
function TANGER_OCX_AddSignFromLocal(pUser) {
	if (TANGER_OCX_bDocOpen) {
		TANGER_OCX_OBJ.AddSignFromLocal(
			pUser,//当前登陆用户
			"",//缺省文件
			true,//提示选择
			0,//left
			0,//top
			"",
			1,
			100,
			0);
	}
}

function TANGER_OCX_DoHandSign2(user) {
	if (!TANGER_OCX_IsDocumentProtected()) {
		TANGER_OCX_OBJ.DoHandSign2(user);
	}
	else{
		alert("抱歉，当前文档不可做任何修改，无法添加手写签名！");
	}
}

//签名验证
function TANGER_OCX_DoCheckSign(flag,str) {
	return TANGER_OCX_OBJ.DoCheckSign(flag,str);
}

//点击接受修订菜单，不但要执行接受修订功能，还要保存到后台
function acceptAllRevisions() {
 
    document.getElementById("revisionFlag").value = "docToDraft";
    TANGER_OCX_SaveEditToServer(false);

	//对正文接受修订并保存
	//如果当前文档为只读或者被保护，先解保护，再接受修订！
	if (TANGER_OCX_IsReadOnly()) {
		TANGER_OCX_SetReadOnly(false);
	}
	if (TANGER_OCX_IsDocumentProtected()) {
		TANGER_OCX_DocumentUnProtect();
	}
	//接受修订
	TANGER_OCX_OBJ.ActiveDocument.AcceptAllRevisions();
	TANGER_OCX_DocumentProtect();//再保护文档

	document.getElementById("revisionFlag").value = "saveDoc";

	if (isDraftExist != null) {
		isDraftExist.value = CONST_READONLY;// 接受修订之后就只读
	}

	TANGER_OCX_SaveAndReload();//做保存操作，然后重新加载
}

//返回当前的只读状态
function TANGER_OCX_IsReadOnly(){
	if(TANGER_OCX_OBJ_GetDocType()==1){//word
		return TANGER_OCX_OBJ.IsReadOnly || TANGER_OCX_IsDocumentProtected();
	}else if(TANGER_OCX_OBJ_GetDocType()==2){//excel
		return false;
	}
	//由于千航控件的只读状态在重新加载的时候没有初始化，
	//所以即使文档是正在受保护的，TANGER_OCX_OBJ.IsReadOnly 无法返回正确的状态
}

//接受修订
function TANGER_OCX_AcceptAllRevisions() {
	//如果当前文档为只读或者被保护，先解保护，再接受修订！
	if (TANGER_OCX_IsReadOnly()) {
		TANGER_OCX_SetReadOnly(false);
	}
	if (TANGER_OCX_IsDocumentProtected()) {
		TANGER_OCX_DocumentUnProtect();
	}
	//接受修订
	TANGER_OCX_OBJ.ActiveDocument.AcceptAllRevisions();
}

//点击重新修订菜单，不但要保存修订状态值到后台，还要将草稿覆盖原文
function cancelAllRevisions() {
	//保存修订状态值
	if (isDraftExist != null) { 
		isDraftExist.value = ""; 
	}
     
	document.getElementById("revisionFlag").value = "draftToDoc";
	TANGER_OCX_SaveAndReload();//做保存操作，然后重新加载
	
     
}

 
//从本地增加印章文档指定位置
function AddSignFromLocal()
{
   if(TANGER_OCX_bDocOpen)
   {
      TANGER_OCX_OBJ.AddSignFromLocal(
	currLoginUser,//当前登陆用户
	"",//缺省文件
	true,//提示选择
	0,//left
	0)  //top
   }
}

//从URL增加印章文档指定位置
function AddSignFromURL(URL)
{
   if(TANGER_OCX_bDocOpen)
   {
      TANGER_OCX_OBJ.AddSignFromURL(
	currLoginUser,//当前登陆用户
	URL,//URL
	50,//left
	50)  //top
   }
}

//开始手写签名
function DoHandSign()
{
   if(TANGER_OCX_bDocOpen)
   {	
	TANGER_OCX_OBJ.DoHandSign(
	currLoginUser,//当前登陆用户 必须
	0,//笔型0－实线 0－4 //可选参数
	0x000000ff, //颜色 0x00RRGGBB//可选参数
	2,//笔宽//可选参数
	100,//left//可选参数
	50); //top//可选参数
	}
}
//开始手工绘图，可用于手工批示
function DoHandDraw()
{
	if(TANGER_OCX_bDocOpen)
	{	
	TANGER_OCX_OBJ.DoHandDraw(
	0,//笔型0－实线 0－4 //可选参数
	0x00ff0000,//颜色 0x00RRGGBB//可选参数
	3,//笔宽//可选参数
	200,//left//可选参数
	50);//top//可选参数
	}
}
//检查签名结果
function DoCheckSign()
{
	if(TANGER_OCX_bDocOpen)
	{		
	var ret = TANGER_OCX_OBJ.DoCheckSign
	(
	/*可选参数 IsSilent 缺省为FAlSE，表示弹出验证对话框,否则，只是返回验证结果到返回值*/
	);//返回值，验证结果字符串
	//alert(ret);
	}	
}
//此函数用来加入一个自定义的文件头部
function TANGER_OCX_AddDocHeader( strHeader )
{
	var i,cNum = 30;
	var lineStr = "";
	try
	{
		for(i=0;i<cNum;i++) lineStr += "_";  //生成下划线
		with(TANGER_OCX_OBJ.ActiveDocument.Application)
		{
			Selection.HomeKey(6,0); // go home
			Selection.TypeText(strHeader);
			Selection.TypeParagraph(); 	//换行
			Selection.TypeText(lineStr);  //插入下划线
			// Selection.InsertSymbol(95,"",true); //插入下划线
			Selection.TypeText("★");
			Selection.TypeText(lineStr);  //插入下划线
			Selection.TypeParagraph();
			//Selection.MoveUp(5, 2, 1); //上移两行，且按住Shift键，相当于选择两行
			Selection.HomeKey(6,1);  //选择到文件头部所有文本
			Selection.ParagraphFormat.Alignment = 1; //居中对齐
			with(Selection.Font)
			{
				NameFarEast = "宋体";
				Name = "宋体";
				Size = 12;
				Bold = false;
				Italic = false;
				Underline = 0;
				UnderlineColor = 0;
				StrikeThrough = false;
				DoubleStrikeThrough = false;
				Outline = false;
				Emboss = false;
				Shadow = false;
				Hidden = false;
				SmallCaps = false;
				AllCaps = false;
				Color = 255;
				Engrave = false;
				Superscript = false;
				Subscript = false;
				Spacing = 0;
				Scaling = 100;
				Position = 0;
				Kerning = 0;
				Animation = 0;
				DisableCharacterSpaceGrid = false;
				EmphasisMark = 0;
			}
			Selection.MoveDown(5, 3, 0); //下移3行
		}
	}
	catch(err){
		//alert("错误：" + err.number + ":" + err.description);
	}
	finally{
	}
}
function trim(value)
{
	return value.replace(/^\s+/,'').replace(/\s+$/,'');
}

function TANGER_OCX_doFormOnSubmit()
{
	var form = document.forms[0];
  	if (form.onsubmit) {
    	var retVal = form.onsubmit();
     	if (typeof retVal == "boolean" && retVal == false){
       	    return false;
		}
	}
	return true;
}

//允许或禁止显示修订工具栏和工具菜单（保护修订）
function TANGER_OCX_EnableReviewBar(boolvalue)
{
	TANGER_OCX_OBJ.ActiveDocument.CommandBars("Reviewing").Enabled = boolvalue;
	TANGER_OCX_OBJ.ActiveDocument.CommandBars("Track Changes").Enabled = boolvalue;
	TANGER_OCX_OBJ.IsShowToolMenu = boolvalue;	//关闭或打开工具菜单
	var type = TANGER_OCX_OBJ.DocType;
	// 1=word;
	// 2=Excel.Sheet或者 Excel.Chart;
	// 3=PowerPoint.Show;
	// 4=Visio.Drawing;
	// 5=MSProject.Project;
	if (type == 1 || type == 2 || type == 3 || type == 4 || type == 5) {
		TANGER_OCX_OBJ.ActiveDocument.CommandBars("Track Changes").Enabled = boolvalue;
	}
}

//打开或者关闭修订模式
function TANGER_OCX_SetReviewMode(boolvalue)
{
	try{
	    TANGER_OCX_OBJ.ActiveDocument.TrackRevisions = boolvalue;
	}catch(exe){
	}
}

//进入或退出痕迹保留状态，调用上面的两个函数
function TANGER_OCX_SetMarkModify(boolvalue)
{
	TANGER_OCX_SetReviewMode(boolvalue);
	TANGER_OCX_EnableReviewBar(!boolvalue);
}

//显示/不显示修订文字
function TANGER_OCX_ShowRevisions(boolvalue)
{
	TANGER_OCX_OBJ.ActiveDocument.ShowRevisions = boolvalue;
}

//打印/不打印修订文字
function TANGER_OCX_PrintRevisions(boolvalue)
{
	TANGER_OCX_OBJ.ActiveDocument.PrintRevisions = boolvalue;
}


//相当于点击“文档保护”菜单
function TANGER_OCX_OnClickDocumentProtect() {
	TANGER_OCX_DocumentProtect();
	TANGER_OCX_SaveAndReload();
}

//相当于点击“取消文档保护”菜单
function TANGER_OCX_OnClickDocumentUnProtect() {
	TANGER_OCX_DocumentUnProtect();
	TANGER_OCX_SaveAndReload();
}

/**
 * 取消文档保护
 */
function TANGER_OCX_DocumentUnProtect() {
   try{
	if(TANGER_OCX_OBJ_GetDocType() == 1){//word
		TANGER_OCX_OBJ.ActiveDocument.UnProtect(Default_Password);
	} else if(TANGER_OCX_OBJ_GetDocType() == 2){//excel
		for (var i = 1; i <= TANGER_OCX_OBJ.ActiveDocument.Application.Sheets.Count; i++)	{
			TANGER_OCX_OBJ.ActiveDocument.Application.Sheets(i).Unprotect(Default_Password);
		}
		TANGER_OCX_OBJ.ActiveDocument.Application.ActiveWorkbook.Unprotect(Default_Password);
	}
   }catch(err){
   }
}

var Protect_Type_Code = 2;

/**
 * 判断文档是否保护。true为保护；false为不保护
 */
function TANGER_OCX_IsDocumentProtected() {
	if(TANGER_OCX_OBJ_GetDocType()==1){//word
		//引常量
		var isProtected = TANGER_OCX_DocumentProtectionType() == Protect_Type_Code;
		return isProtected;
	}else if(TANGER_OCX_OBJ_GetDocType()==2){//excel
		return false;
	}
}

/**
 * 返回文档的保护类型
 */
function TANGER_OCX_DocumentProtectionType() {
	return TANGER_OCX_OBJ.ActiveDocument.ProtectionType;
}

function TANGER_OCX_SaveToServer()
{
	if(!TANGER_OCX_bDocOpen) {
		alert("没有打开的文档。");
		return;
	}
	
	TANGER_OCX_filename = prompt("附件另存为：","新文档.doc");
	if ( (!TANGER_OCX_filename))
	{
		TANGER_OCX_filename ="";
		return;
	}
	else if (trim(TANGER_OCX_filename)=="")
	{
		alert("您必须输入文件名！");
		return;
	}
	
	TANGER_OCX_SaveDoc();
}

//打印文档
function TANGER_OCX_PrintDoc()
{
	try
	{
		TANGER_OCX_OBJ.printout(true);
	}
	catch(err){
		alert("错误：" + err.number + ":" + err.description);
	}
	finally{
	}
}

function TANGER_OCX_SaveEditToServer()
{
	if(!TANGER_OCX_bDocOpen)
	{
		alert("没有打开的文档。");
		return;
	}
	
	TANGER_OCX_filename = document.all.item("filename").value;
	if ( (!TANGER_OCX_filename))
	{
		TANGER_OCX_filename ="";
		return;
	}
	else if (trim(TANGER_OCX_filename)=="")
	{
		alert("您必须输入文件名！");
		return;
	}
 	TANGER_OCX_SaveDoc();
}

//允许或禁止文件－>新建菜单
function TANGER_OCX_EnableFileNewMenu(boolvalue)
{
	TANGER_OCX_OBJ.EnableFileCommand(0) = boolvalue;
}
//允许或禁止文件－>打开菜单
function TANGER_OCX_EnableFileOpenMenu(boolvalue)
{
	TANGER_OCX_OBJ.EnableFileCommand(1) = boolvalue;
}
//允许或禁止文件－>关闭菜单
function TANGER_OCX_EnableFileCloseMenu(boolvalue)
{
	TANGER_OCX_OBJ.EnableFileCommand(2) = boolvalue;
}
//允许或禁止文件－>保存菜单
function TANGER_OCX_EnableFileSaveMenu(boolvalue)
{
	TANGER_OCX_OBJ.EnableFileCommand(3) = boolvalue;
}
//允许或禁止文件－>另存为菜单
function TANGER_OCX_EnableFileSaveAsMenu(boolvalue)
{
	TANGER_OCX_OBJ.EnableFileCommand(4) = boolvalue;
}
//允许或禁止文件－>打印菜单
function TANGER_OCX_EnableFilePrintMenu(boolvalue)
{
	TANGER_OCX_OBJ.EnableFileCommand(5) = boolvalue;
}
//允许或禁止文件－>打印预览菜单
function TANGER_OCX_EnableFilePrintPreviewMenu(boolvalue)
{
	TANGER_OCX_OBJ.EnableFileCommand(6) = boolvalue;
}

//检查WPS是否已经安装
function TANGER_OCX_Check_WPS_installed() {
	try {
		var wpsApp = new ActiveXObject("WPS.Application");
		delete wpsApp;
		wpsApp=null;
	} catch (ex) {
		return false;
	}
	return true;
}

function TANGER_OCX_OnDocumentOpened(str, obj)
{
	TANGER_OCX_bDocOpen = true;		
}

function TANGER_OCX_OnDocumentClosed()
{
   TANGER_OCX_bDocOpen = false;
}

function TANGER_OCX_SaveDoc()
{
	var newwin,newdoc;

	if(!TANGER_OCX_bDocOpen) {
		alert("没有打开的文档。");
		return;
	}

	try
	{
	 	if(!TANGER_OCX_doFormOnSubmit())return; //如果存在，则执行表单的onsubmit函数。
	 	//调用控件的SaveToURL函数
		var retHTML = TANGER_OCX_OBJ.SaveToURL
		(
			document.forms[0].action,  //此处为uploadedit.asp
			"EDITFILE",	//文件输入域名称,可任选,不与其他<input type=file name=..>的name部分重复即可
			document.forms[0].x_params.value, //可选的其他自定义数据－值对，以&分隔。如：myname=tanger&hisname=tom,一般为空
			document.forms[0].filename.value, //文件名,此处从表单输入获取，也可自定义
			"iForm" //控件的智能提交功能可以允许同时提交选定的表单的所有数据.此处可使用id或者序号
		); //此函数会读取从服务器上返回的信息并保存到返回值中。	 
	}
	catch(err){
		alert("不能保存到URL：" + err.number + ":" + err.description);
	}
	finally{
	}
}
 

function TANGER_OCX_IsDocumentSaved() {
	var isSaved = TANGER_OCX_OBJ.ActiveDocument.Saved;
	return isSaved;
}

//修改整个文档的只读属性，包括对菜单的显示的操作
function TANGER_OCX_SetReadOnly(flag)
{
	if (flag)	{
		TANGER_OCX_OBJ.SetReadOnly(false);

		//置所有菜单无效
		disableAll(15,TANGER_OCX_OBJ);
		//置“文件”菜单无效
		TANGER_OCX_EnableFileNewMenu(false);	//禁止文件－>新建
		TANGER_OCX_EnableFileOpenMenu(false);	//禁止文件－>打开
		TANGER_OCX_EnableFileCloseMenu(false);	//禁止文件－>关闭
		TANGER_OCX_EnableFileSaveMenu(false);	//禁止文件－>保存
		TANGER_OCX_EnableFileSaveAsMenu(false);	//禁止文件－>另存为
		TANGER_OCX_OBJ.RemoveFileMenuItem(0);	//禁止文件－>保存到服务器
		TANGER_OCX_OBJ.RemoveFileMenuItem(0);	//禁止文件－>从模板创建

		TANGER_OCX_OBJ.SetReadOnly(true);
	}
	else
	{
		TANGER_OCX_OBJ.SetReadOnly(false);//目前先这样
	}
}

//显示或隐藏指定编号的菜单
function TANGER_OCX_ShowMenuByID(ids, isShow) {
	var idType = typeof(ids);
	if (idType == "number") {
		TANGER_OCX_EnableCustomMenuItem(ids, isShow);
	}
	else if (idType == "object" && ids instanceof Array) {
		for (var i = 0; i < ids.length; i++) {//alert(ids[i]);
			TANGER_OCX_ShowMenuByID(ids[i], isShow);//递归
		}
	}
}

//添加自定义菜单
function TANGER_OCX_AddCustomMenuItem(order, name, key) {
	if (order != -1) {
		TANGER_OCX_OBJ.AddCustomMenuItem2(0, order, -1, false, name, false, key);
	}
}

//添加分隔符
function TANGER_OCX_AddCustomSeparator(order) {
	if (order != -1) {
		TANGER_OCX_OBJ.AddCustomMenuItem2(0, order, -1, false, "", true);
	}
}

//显示或隐藏自定义菜单或分隔符
function TANGER_OCX_EnableCustomMenuItem(order, isShow) {
	if (order != -1) {
		TANGER_OCX_OBJ.EnableCustomMenuItem2(0, order, -1, isShow);
	}
}

//允许或禁止文件－>新建菜单
function TANGER_OCX_EnableFileNewMenu(boolvalue) {
	TANGER_OCX_OBJ.FileNew = boolvalue;
}

//允许或禁止文件－>打开菜单
function TANGER_OCX_EnableFileOpenMenu(boolvalue) {
	TANGER_OCX_OBJ.FileOpen = boolvalue;
}

//允许或禁止文件－>关闭菜单
function TANGER_OCX_EnableFileCloseMenu(boolvalue) {
	TANGER_OCX_OBJ.FileClose = boolvalue;
}

//允许或禁止文件－>保存菜单
function TANGER_OCX_EnableFileSaveMenu(boolvalue) {
	TANGER_OCX_OBJ.FileSave = boolvalue;
}

//允许或禁止文件－>另存为菜单
function TANGER_OCX_EnableFileSaveAsMenu(boolvalue) {
	TANGER_OCX_OBJ.FileSaveAs = boolvalue;
}

//允许或禁止文件－>打印菜单
function TANGER_OCX_EnableFilePrintMenu(boolvalue) {
	TANGER_OCX_OBJ.FilePrint = boolvalue;
}

//允许或禁止文件－>打印预览菜单
function TANGER_OCX_EnableFilePrintPreviewMenu(boolvalue) {
	TANGER_OCX_OBJ.FilePrintPreview = boolvalue;
}

//允许或禁止文件－>页面设置菜单
function TANGER_OCX_EnableFilePageSetupMenu(boolvalue) {
	TANGER_OCX_OBJ.FilePageSetup = boolvalue;
}

//允许或禁止文件－>文件属性菜单
function TANGER_OCX_EnableFilePropertiesMenu(boolvalue) {
	TANGER_OCX_OBJ.FileProperties = boolvalue;
}

//做保存操作，然后重新加载
function TANGER_OCX_SaveAndReload(){
	TANGER_OCX_SaveEditToServer();
	setTimeout("document.location.reload()",1000);
}


// 1=word;
// 2=Excel.Sheet或者 Excel.Chart;
// 3=PowerPoint.Show;
// 4=Visio.Drawing;
// 5=MSProject.Project;
//返回当前文档的类型
function TANGER_OCX_OBJ_GetDocType(){
	return TANGER_OCX_OBJ.DocType;
}